// 引入发送请求的函数对象
import { defHttp } from '/@/utils/http/axios';
// 引入响应返回值的数据类型
import {
  GetTrademarkListResponseModel,
  TrademarkModel,
  TrademarkListModel,
} from './model/trademarkModel';

// 定义请求地址的枚举
enum Api {
  GetTrademarkList = '/admin/product/baseTrademark',
  GetAllTrademarkList = '/admin/product/baseTrademark/getTrademarkList',
  SaveTrademark = '/admin/product/baseTrademark/save',
  DeleteTrademark = '/admin/product/baseTrademark/remove',
  UpdateTrademark = '/admin/product/baseTrademark/update',
}

/**
 * 获取所有品牌列表
 * @returns TrademarkListModel
 */
export const getAllTrademarkListApi = () => {
  return defHttp.get<TrademarkListModel>({
    url: Api.GetAllTrademarkList,
  });
};

/**
 * 获取品牌分页列表
 * @param page 当前页码
 * @param limit 每页条数
 * @returns GetTrademarkListResponseModel
 */
export const getTrademarkListApi = (page: number, limit: number) => {
  return defHttp.get<GetTrademarkListResponseModel>({
    url: Api.GetTrademarkList,
    // 最终 Api.GetTrademarkList + params
    // 如果参数格式是path（params）
    params: `/${page}/${limit}`,
    // 如果参数格式是querystring
    // params: {
    //   page,
    //   limit,
    // },
    // 如果是参数格式是body
    // data: {
    //   page,
    //   limit,
    // },
  });
};

/**
 * 添加品牌
 * @param tmName 品牌名称
 * @param logoUrl 品牌logo
 * @returns null
 */
export const saveTrademarkApi = (tmName: string, logoUrl: string) => {
  return defHttp.post<null>({
    url: Api.SaveTrademark,
    data: {
      tmName,
      logoUrl,
    },
  });
};

/**
 * 删除品牌
 * @param id 品牌id
 * @returns null
 */
export const deleteTrademarkApi = (id: number) => {
  return defHttp.delete<null>({
    url: Api.DeleteTrademark,
    params: `/${id}`,
  });
};

/**
 * 更新品牌
 * @param tm 品牌数据
 * @returns null
 */
export const updateTrademarkApi = (tm: TrademarkModel) => {
  return defHttp.put<null>({
    url: Api.UpdateTrademark,
    data: tm,
  });
};
